package com.lili.math;

/**
 * @Auther: 李 力
 * @Date: 2024/8/3
 * @Description: 阶乘后的零
 * @version: 1.0
 */
public class LeetCode172 {

    /*  前提:小的整数，大整数是不行的
     *  时间复杂度: O(n^2)
     *  空间复杂度: O(n^2)
     */
    public static int trailingZeroes(int n) {
        if (n == 0) {
            return 0;
        }
        long result = df(n);
        String string = Long.toString(result);
        int count = 0;
        for (int index = string.length() - 1; index >= 0; index--) {
            if (string.charAt(index) == '0') {
                count++;
            } else {
                break;
            }
        }
        return count;
    }

    private static long df(int n) {
        if (n == 1) {
            return n;
        }
        return df(n - 1) * n;
    }

    //优化如下:
    public static int trailingZeroes2(int n) {
        int ans = 0;
        while (n != 0) {
            n = n / 5;
            ans = ans + n;
        }
        return ans;
    }
}
